# -*- coding:utf-8 -*-

# @Time    : 2023/6/27 17:05
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : determine_solution.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from bot.insurance_consultant.agent.llm_agent import LLMAgent

default_template = """
作为一个专业的保险销售员，你需要根据用户的问题和对话记录，给出最合适的解答。如果用户没问题,则无需解答,对话将会由其他人完成,你只负责解答用户的问题。
业务背景:
```
{business_background}
```
注意以下事项：
1.回复的内容是要解答用户的问题，相关知识在业务知识集合中，不要一次性给出多个解答，不要无中生有；
2.回复的内容将用于生成具体回复用户的话术，用户有多个问题时只回答最核心的问题，不要包含不必要的信息；
3.回复的内容只用于下一轮和用户沟通的话术生成，也不要列出具体详细的步骤，也不用枚举各种用户问题或解决方案的情况，只需要给出最后解决方案的结论；
用户信息：
```
{user_base_info}
{user_info}
```
用户问题：
```
{user_question}
```
业务知识集合：
```
{multi_knowledge}
```

对话记录如下：
```
{conversation_history}
```

要求:如果用户问题是用户无问题,则无需解答,输出无问题即可。
根据用户问题、对话记录和业务知识集合，请一步步思考，保险销售员对用户问题的解答是：
"""


class QuestionSolution(LLMAgent):
    """用户问题及疑议判断机器人"""

    def __init__(self, role, business_background, user_base_info, user_info, user_question, multi_knowledge, conversation_history):
        conversation_history = conversation_history.replace("保险规划师", "保险销售员")
        self.prompt = default_template.format(role=role,
                                              business_background=business_background,
                                              user_base_info=user_base_info,
                                              user_info=user_info,
                                              user_question=user_question,
                                              multi_knowledge=multi_knowledge,
                                              conversation_history=conversation_history)
        super().__init__(self.prompt)
